﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using vudu.Logica.Clases;
using vudu.Logica.Excepciones;
using System.Data;
using vudu.EnlaceDatos.SqlServer;
using System.Data.SqlClient;

namespace vudu.PaginasWeb.G5Profesor
{
    public partial class ConsultaPorMateriaProfesor : System.Web.UI.Page
    {
        Profesor profesor;
        List<Profesor> profesores;
        List<Materia> materias;
        DataTable miTabla;
        string _materia;
        int _tipo = 2;
        Escuela miEscuelaActual;

        protected void Page_Load(object sender, EventArgs e)
        {

            try
            {
                //OBJETO SESSION 
                string miRol = (string)Session["rol"];
                if (miRol != "Escuela")
                    Response.Redirect("../G3AccesoSistema/InicioSistema.aspx");
                Escuela esc = (Escuela)Session["Usuario"];
                nombreEscuela.Text = "Escuela: " + esc.NombreEscuela;

                miEscuelaActual = new Escuela();
                miEscuelaActual = (Escuela)Session["Usuario"];
            }
            catch (Exception)
            {
                miEscuelaActual.IdEscuela = 1;
            }
            aviso.Visible = false;
            if (!IsPostBack)
            {
                try
                {
                    llenarMateria();

                }
                catch (Exception)
                {
                    aviso.Text = "Error en Conexión con Base De Datos";
                    aviso.Visible = true;
                }
            }

        }

        protected void llenarMateria()
        {
            try
            {
                materias = new SqlServerMateria().ConsultarTodasLasMaterias();
                
                seleccionarMateria.Items.Clear();
                int i = 0;

                foreach (Materia miMateria in materias)
                {
                    seleccionarMateria.Items.Add(miMateria.Nombre);
                    seleccionarMateria.Items[i].Value = miMateria.Codigo.ToString();
                    i++;
                }

            }
            catch (Exception)
            {
                aviso.Text = "Error en Conexión con Base De Datos";
                aviso.Visible = true;
            }

        }

        protected DataTable cargarTabla(string miEscuela, string codigo)
        {
            DataTable miTabla = new DataTable();
            List<Profesor> profe = new List<Profesor>();

            miTabla.Columns.Add("Cédula", typeof(string));
            miTabla.Columns.Add("Apellido", typeof(string));
            miTabla.Columns.Add("Nombre", typeof(string));
            miTabla.Columns.Add("Fecha Nacimiento", typeof(string));
            miTabla.Columns.Add("Teléfono", typeof(string));
            miTabla.Columns.Add("Email", typeof(string));
            miTabla.Columns.Add("Status", typeof(string));
            miTabla.Columns.Add("Tiempo Laboral", typeof(string));

            profe = buscarMisProfesores(miEscuela, codigo);

            foreach (Profesor profesor in profe)
            {

                miTabla.Rows.Add(profesor.Cedula, profesor.Apellido, profesor.Nombre, profesor.FechaNacimiento, profesor.Telefono, profesor.Email, profesor.Estatus, profesor.TiempoLaboral);
            }

            return miTabla;
        }


        protected List<Profesor> buscarMisProfesores(string miEscuela, string codigo)
        {
            List<Profesor> listaProfe = new List<Profesor>();
            Conexion conex = new Conexion();
            SqlCommand command = new SqlCommand();

            conex.AbrirConexionBd();
            command.Connection = conex.ObjetoConexion();
            command.CommandType = System.Data.CommandType.Text;
            command.CommandText = "SELECT Distinct Profesor.* FROM Escuela INNER JOIN ";
            command.CommandText = command.CommandText + "EscuelaProfesor ON " + miEscuela + " = EscuelaProfesor.fk_Escuela INNER JOIN ";
            command.CommandText = command.CommandText + "Profesor ON EscuelaProfesor.fk_Profesor = Profesor.id_Cedula INNER JOIN ";
            command.CommandText = command.CommandText + "SeccionMateria ON Profesor.id_Cedula = SeccionMateria.fk_Profesor INNER JOIN ";
            command.CommandText = command.CommandText + "Materia ON SeccionMateria.fk_Materia = " + codigo;
            command.CommandTimeout = 10;

            SqlDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                Profesor profe = new Profesor();
                profe.Cedula = reader.GetInt32(0);
                profe.Nombre = reader["nombreProfesor"].ToString();
                profe.Apellido = reader["apellidoProfesor"].ToString();
                profe.Crn = reader.GetInt32(3);
                profe.Email = reader["emailProfesor"].ToString();
                profe.FechaNacimiento = reader.GetDateTime(5);
                profe.Sexo = reader["sexoProfesor"].ToString();
                profe.Telefono = reader["telefonoProfesor"].ToString();
                profe.TiempoLaboral = reader["contratoProfesor"].ToString();
                profe.Estatus = reader["estadoProfesor"].ToString();
                profe.EspacioMaxCarga = reader.GetInt32(10);
                profe.EspacioUtilizado = reader.GetInt32(11);


                listaProfe.Add(profe);

            }
            reader.Close();
            conex.CerrarConexionBd();
            return listaProfe;
        }

        protected void botonRegresar_Click(object sender, EventArgs e)
        {
            Response.Redirect("ConsultarProfesorPrincipal.aspx");
        }

        protected void botonConsultar_Click(object sender, EventArgs e)
        {
            try
            {
                tablaProfes.DataSource = cargarTabla(miEscuelaActual.IdEscuela.ToString(), seleccionarMateria.SelectedValue);
                tablaProfes.DataBind();
            }
            catch (Exception)
            {
                LabelError.Text = "Error en conexión con Base De Datos";
                LabelError.ForeColor = System.Drawing.Color.Red;
                LabelError.Visible = true;
            }
        }

    }

}